﻿Imports System
Imports System.Net
Imports System.IO
Imports System.Text

Module Module1

    'Método que se encarga de obtener los datos del ftp
    'Obteniendo los txt generados por el sistema central
    Sub Main()

        'Indico que se esta conectando al ftp
        Console.WriteLine("Conectando al ftp")
        Console.WriteLine("-------------------")

        'Datos del ftp
        Const host As String = "ftp://ftp.fejipba.com.ar/www/TXT/"
        Const username As String = "admin@fejipba.com.ar"
        Const password As String = "3KQZMRae"

        'Declaro un array list para archivos remotos y locales
        Dim arrayRemote As New ArrayList()
        Dim arrayLocal As New ArrayList()

        'Archivo Club
        arrayLocal.Add("C:\fejipba\club.txt")
        arrayRemote.Add("club")

        'Archivo Socios
        arrayLocal.Add("C:\fejipba\socios.txt")
        arrayRemote.Add("socios")

        'Archivo categoria
        arrayLocal.Add("C:\fejipba\categoria.txt")
        arrayRemote.Add("categoria")

        'Archivo concursar
        arrayLocal.Add("C:\fejipba\concursar.txt")
        arrayRemote.Add("concursar")

        'Recorro los archivos
        For i = 0 To 3
            'Ruta completa del archivo remoto
            Dim URI As String = host & arrayRemote.Item(i) + ".txt"

            Console.WriteLine("Descargando el archivo " + arrayRemote.Item(i))
            Console.WriteLine("----------------------------------------------------")

            'Creo el directorio URI
            Dim ftp As FtpWebRequest = CType(FtpWebRequest.Create(URI), Net.FtpWebRequest)
            'Instancio la clase
            ftp.Credentials = New NetworkCredential(username, password)

            'Seteo propiedades
            ftp.KeepAlive = False
            ftp.UseBinary = True

            'Defino el método a utilizar
            ftp.Method = WebRequestMethods.Ftp.DownloadFile

            Try
                Using response As FtpWebResponse = CType(ftp.GetResponse, FtpWebResponse)
                    Using responseStream As Stream = response.GetResponseStream
                        Using fs As New FileStream(arrayLocal.Item(i), FileMode.Create)
                            Dim buffer(2047) As Byte
                            Dim read As Integer = 0
                            Do
                                read = responseStream.Read(buffer, 0, buffer.Length)
                                fs.Write(buffer, 0, read)
                            Loop Until read = 0
                            responseStream.Close()
                            fs.Flush()
                            fs.Close()
                        End Using
                        responseStream.Close()
                    End Using
                    response.Close()
                End Using

                Console.WriteLine("Se descargo correctamente el archivo " + arrayLocal.Item(i))
                Console.WriteLine("")
            Catch ex As Exception
                Console.WriteLine("Error al descargar el archivo: " + arrayLocal.Item(i) + " Motivo: " + ex.Message)
                Console.ReadLine()
            End Try
        Next

        'Indico que termino el proceso
        Console.WriteLine("El proceso termino con exito")
        Console.WriteLine("--------------------------------")
        Console.ReadLine()

    End Sub

End Module
